Parentheses can disambiguate the order of operations in complex expressions and make the code easier to understand.
a = (b * c) + (d * e); // Compliant: the intent is clear.
Redundant parentheses are parenthesis that do not change the behavior of the code, and do not clarify the intent. They can mislead and complexify
the code. They should be removed.
Noncompliant code example
int x = ((y / 2 + 1)); // Noncompliant
if (a && ((x + y > 0))) { // Noncompliant
return ((x + 1)); // Noncompliant
}
Compliant solution
int x = (y / 2 + 1);
if (a && (x + y > 0)) {
return (x + 1);
}
Exceptions
Assignments inside conditions are often the result of a mistake. S1121 flags this potential bug.
if (x = 7) { // Noncompliant: Did the author mean "x == 7"?
// ...
}
Adding a pair of parentheses to clearly state the intent is standard practice and is accepted by this rule.
if ((x = 7)) { // Compliant
// ...
}